home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C ++ / Applications / FlyThrough 1.1.2 / src / Source / Grayscale Classes / CAGASlider.h < prev    next >
Encoding:
Text File  |  1997-04-08  |  4.0 KB  |  125 lines  |  [TEXT/CWIE]

  1. //
  2. //    CAGASlider.h
  3. //
  4. //    Apple Grayscale Appearance Slider class for PowerPlant
  5. //    Subclassed from LControl
  6. //
  7. //    version 1.4.3 - March 29, 1997
  8. //
  9. //    Copyright © 1996-1997 by James Jennings. All rights reserved.
  10. //
  11.  
  12. #pragma once
  13.  
  14. #include <LControl.h>
  15. #include <UGWorld.h>
  16. #include <URegistrar.h>
  17. #include "UGrayscaleAppearance.h"
  18.  
  19. // In version 1.4.2 the slider redraws itself when it's appearance changes.
  20. // Since this might affect backward compatibility, I've added a compiler flag.
  21. #define SLIDER_DRAWS_SELF
  22.  
  23. class CAGASlider : public LControl, public UGrayscaleAppearance {
  24. public:
  25.     enum { class_ID = 'Slid' };
  26.     static CAGASlider*    CreateFromStream(LStream *inStream);
  27.     static    void    Register(void)
  28.         {     URegistrar::RegisterClass( class_ID, (ClassCreatorFunc) CreateFromStream);  }
  29.     
  30.                         CAGASlider(LStream *inStream);
  31.                         CAGASlider(const CAGASlider &inSlider);    // copy constructor
  32.     virtual                ~CAGASlider();
  33.     
  34.     // Recalculate mTrackRect when the frame changes size.
  35.     virtual void    ResizeFrameBy(Int16 inWidthDelta, Int16 inHeightDelta, Boolean inRefresh);
  36.     virtual void    MoveBy(Int32 inHorizDelta, Int32 inVertDelta, Boolean inRefresh);
  37.     
  38.     static    void        Purge();    // Release indicator images
  39.     
  40.     // Enumerations for controling display states.
  41. typedef    enum {
  42.         hot_None = 0,
  43.         hot_Indicator,
  44.         hot_Track        // don't confuse 'the track' with 'mouse tracking'.
  45.         } EHotSpots;
  46. typedef    enum {
  47.         ind_Enabled = 0,
  48.         ind_Pressed,
  49.         ind_Ghost,
  50.         ind_Disabled
  51.         } EIndicatorState;
  52. typedef    enum {
  53.         ind_Horizontal = 0,
  54.         ind_North,
  55.         ind_South,
  56.         ind_Vertical,
  57.         ind_East,
  58.         ind_West
  59.         } EIndicatorDirection;
  60.     
  61. protected:
  62.     EIndicatorDirection    mDirection;
  63.     EIndicatorState        mState;
  64.     Uint16                mNumberOfTicks;    // 0 = no ticks, 1 = max-min+1 ticks, >1 is the number
  65.     // mContinuousBroadcast == true -> broadcast changes without waiting for mouseUp
  66.     Boolean                mContinuousBroadcast;
  67.     // mMinIsBottomOrRight == true -> direction of increasing value is up or left, 
  68.     // opposite that of standard scrollbars.
  69.     Boolean                mMinIsBottomOrRight;
  70.     
  71.     Boolean                mIsTracking;
  72.     Int32                mTrackingValue;
  73.     Rect                mTrackRect;        // bounds for drawing the track
  74.     Rect                mChangedRect;    // what to redraw while tracking the indicator
  75.  
  76.     virtual void        DrawSelf();
  77.     virtual void        DrawSelfBasic( Boolean useGrays );
  78.     virtual void        DrawTrack( EIndicatorState inState, Boolean inUseGrays = true );
  79.     virtual void        DrawIndicator( Int32 inValue, EIndicatorState inState = ind_Enabled, 
  80.                                 Boolean inUseGrays = true );
  81.     virtual void        DrawTickMarks( UInt16 inNumber, EIndicatorState inState, 
  82.                                 Boolean inUseGrays = true );
  83.     
  84. //    virtual void        DrawIcon1( Rect inWhere, ResIDT inWhich, Boolean inUseGrays );
  85.     virtual void        DrawIcon( Rect inWhere, EIndicatorDirection inDirection, 
  86.                             EIndicatorState inState, Boolean inUseGrays );
  87.     virtual void        InitColorData();
  88.     virtual void        InitBlackAndWhiteData();
  89.     virtual void        InitMaskData();
  90.     virtual void        InitPICTDataHelper( LGWorld *inWorld, const ResIDT inPICT, 
  91.                                 const Rect inRect );
  92.     
  93. //    virtual    void        DetectBackgroundColor();
  94.     virtual    void        DrawBackground( const Rect &inRect, Boolean inUseGrays );
  95.     RGBColor            mBackground;
  96.     
  97.     static    LGWorld    *    sColorData;
  98.     static    LGWorld    *    sBlackAndWhiteData;
  99.     static    LGWorld    *    sMaskData;
  100.     
  101.     enum EOrientation { orient_Horizontal, orient_Vertical };
  102.     virtual EOrientation GetOrientation();
  103.     
  104.     virtual void        ValueToIndicatorRect( Int32 inValue, Rect & outRect );
  105.     virtual Point        ValueToPosition( Int32 inValue );
  106.     virtual Int32        PositionToValue( Point inPosition );
  107.     
  108.     virtual void        GetTrackRect( Rect &outRect );
  109.     virtual void        CalcTrackRect();
  110.  
  111.     virtual Int16        FindHotSpot(Point inPoint);
  112.     virtual Boolean        PointInHotSpot(Point inPoint, Int16 inHotSpot);
  113.     virtual Boolean        TrackHotSpot(Int16 inHotSpot, Point inPoint);
  114.     virtual void        HotSpotAction(Int16 inHotSpot, Boolean inCurrInside, Boolean inPrevInside);
  115.     virtual void        HotSpotResult(Int16 inHotSpot);
  116.  
  117. #ifdef SLIDER_DRAWS_SELF
  118. public:
  119.     virtual void        SetValue( Int32 inValue );
  120. protected:
  121.     virtual void        EnableSelf();
  122.     virtual void        DisableSelf();
  123. #endif // SLIDER_DRAWS_SELF
  124. };
  125.